Овладейте достъпа до услугите на Google Cloud Platform (GCP) с помощта на клиентската библиотека на Python. Научете за удостоверяване, взаимодействие с услуги и най-добри практики за изграждане на мащабируеми облачни приложения в глобален мащаб.
Отключване на Google Cloud Platform с Python: Изчерпателно ръководство за достъп до GCP услуги
Google Cloud Platform (GCP) предлага огромен набор от услуги за изграждане и внедряване на мащабируеми и надеждни приложения. Python, с ясния си синтаксис и обширни библиотеки, е популярен избор за взаимодействие с GCP. Това ръководство предоставя изчерпателен преглед на това как да използвате клиентската библиотека на Python за достъп и управление на GCP услуги, като се грижи за глобална аудитория с различен технически опит.
Защо да използвате Python с GCP?
Python предлага няколко предимства за взаимодействие с GCP:
- Лесна употреба: Четливият синтаксис на Python опростява разработката, което улеснява ученето и поддръжката на GCP приложения.
- Изчерпателни библиотеки: Google предоставя добре поддържана клиентска библиотека на Python, специално проектирана за GCP услуги.
- Силна поддръжка от общността: Голяма и активна Python общност предоставя много ресурси, уроци и поддръжка за GCP разработка.
- Автоматизация и скриптове: Python се отличава с автоматизиране на задачи и скриптове за управление на инфраструктурата, което е от решаващо значение за облачните среди.
- Наука за данните и машинно обучение: Python е езикът по избор за наука за данните и машинно обучение, който се интегрира безпроблемно с AI/ML услугите на GCP.
Настройване на вашата среда
Преди да започнете, ще трябва да настроите вашата Python среда и да инсталирате необходимите библиотеки.
1. Инсталирайте Python и Pip
Ако нямате инсталиран Python, изтеглете и инсталирайте най-новата версия от официалния уебсайт на Python (https://www.python.org/downloads/). Pip, инсталаторът на Python пакети, обикновено е включен в Python инсталациите.
Проверка: Отворете вашия терминал или команден ред и изпълнете следните команди:
python --version
pip --version
Тези команди трябва да покажат инсталираните версии на Python и Pip.
2. Инсталирайте клиентската библиотека Google Cloud за Python
Библиотеката `google-cloud-python` предоставя достъп до всички GCP услуги. Инсталирайте я с помощта на Pip:
pip install google-cloud-storage google-cloud-compute google-cloud-pubsub # Пример - Инсталирайте пакетите storage, compute и pubsub
Инсталирайте само конкретните клиентски библиотеки за GCP услугите, които възнамерявате да използвате. Това намалява размера на зависимостите на вашето приложение.
Пример (Cloud Storage): За да инсталирате клиентската библиотека Cloud Storage:
pip install google-cloud-storage
3. Конфигуриране на удостоверяване
Удостоверяването е от решаващо значение за предоставяне на разрешение на вашето Python приложение за достъп до GCP ресурси. Има няколко налични метода за удостоверяване:
- Служебни акаунти: Препоръчва се за приложения, работещи на GCP (напр. Compute Engine, Cloud Functions, Cloud Run).
- Потребителски идентификационни данни: Подходящо за локална разработка и тестване.
Използване на служебни акаунти (Препоръчва се за производство)
Служебните акаунти са не-човешки акаунти, които могат да се използват за удостоверяване на приложения и услуги. Те осигуряват сигурен и контролиран начин за предоставяне на достъп до GCP ресурси.
- Създайте служебен акаунт: В Google Cloud Console навигирайте до IAM & Admin > Служебни акаунти и щракнете върху Създаване на служебен акаунт. Предоставете име и описание за вашия служебен акаунт.
- Предоставяне на разрешения: Присвоете подходящи роли на вашия служебен акаунт въз основа на GCP ресурсите, до които вашето приложение трябва да има достъп (напр. `roles/storage.objectAdmin` за пълен контрол върху Cloud Storage обекти).
- Изтеглете ключа за служебния акаунт: Създайте JSON файл с ключ за вашия служебен акаунт и го изтеглете. Третирайте този файл с ключ с изключително внимание, тъй като той предоставя достъп до вашите GCP ресурси. Съхранявайте го сигурно и никога не го качвайте в контрол на версиите.
- Задайте променливата на средата `GOOGLE_APPLICATION_CREDENTIALS`: Задайте променливата на средата `GOOGLE_APPLICATION_CREDENTIALS` на пътя на изтегления JSON файл с ключ.
Пример (Linux/macOS):
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
Пример (Windows):
set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your\service-account-key.json
Важна забележка за сигурност: Избягвайте да кодирате ключа на вашия служебен акаунт директно във вашия код. Използването на променливата на средата `GOOGLE_APPLICATION_CREDENTIALS` е препоръчителният подход за сигурност и поддръжка.
Използване на потребителски идентификационни данни (За локална разработка)
За локална разработка и тестване можете да използвате собствените си потребителски идентификационни данни за Google Cloud.
- Инсталирайте Google Cloud SDK (gcloud): Изтеглете и инсталирайте Google Cloud SDK от официалния уебсайт (https://cloud.google.com/sdk/docs/install).
- Удостоверете се с gcloud: Изпълнете следната команда във вашия терминал или команден ред:
gcloud auth application-default login
Тази команда ще отвори прозорец на браузъра, където можете да влезете във вашия Google Cloud акаунт и да предоставите необходимите разрешения на Google Cloud SDK.
Достъп до GCP услуги с Python
След като настроите вашата среда и конфигурирате удостоверяването, можете да започнете да осъществявате достъп до GCP услуги, използвайки клиентската библиотека на Python. Ето няколко примера:
1. Cloud Storage
Cloud Storage предоставя мащабируемо и издръжливо съхранение на обекти. Можете да използвате клиентската библиотека на Python, за да качвате, изтегляте и управлявате обекти във вашите Cloud Storage кошчета.
Пример: Качване на файл в Cloud Storage
from google.cloud import storage
# Заменете с името на вашето кошче и пътя на файла
BUCKET_NAME = "your-bucket-name"
FILE_PATH = "/path/to/your/local/file.txt"
OBJECT_NAME = "remote/file.txt" # Името, което искате да има файлът в Cloud Storage
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.upload_from_filename(FILE_PATH)
print(f"Файл {FILE_PATH} качен в gs://{BUCKET_NAME}/{OBJECT_NAME}.")
Обяснение:
- `from google.cloud import storage`: Импортира модула Cloud Storage.
- `storage.Client()`: Създава клиентски обект Cloud Storage, използвайки идентификационните данни за удостоверяване, зададени по-рано.
- `client.bucket(BUCKET_NAME)`: Получава препратка към посоченото Cloud Storage кошче.
- `bucket.blob(OBJECT_NAME)`: Създава blob (обект) в кошчето с посоченото име.
- `blob.upload_from_filename(FILE_PATH)`: Качва файла от локалния път на файла в Cloud Storage blob.
Пример: Изтегляне на файл от Cloud Storage
from google.cloud import storage
# Заменете с името на вашето кошче, името на обекта и локалния път на файла
BUCKET_NAME = "your-bucket-name"
OBJECT_NAME = "remote/file.txt"
FILE_PATH = "/path/to/your/local/downloaded_file.txt"
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.download_to_filename(FILE_PATH)
print(f"Файл gs://{BUCKET_NAME}/{OBJECT_NAME} изтеглен в {FILE_PATH}.")
2. Compute Engine
Compute Engine предоставя виртуални машини (VM) в GCP. Можете да използвате клиентската библиотека на Python, за да управлявате Compute Engine инстанции, включително да ги създавате, стартирате, спирате и изтривате.
Пример: Изброяване на Compute Engine инстанции
from google.cloud import compute_v1
# Заменете с вашия проектен идентификатор и зона
PROJECT_ID = "your-project-id"
ZONE = "us-central1-a"
client = compute_v1.InstancesClient()
request = compute_v1.ListInstancesRequest(
project=PROJECT_ID,
zone=ZONE
)
# Направете заявката
pager = client.list(request=request)
print("Инстанции в проект и зона:")
# Обработете отговора
for response in pager:
print(response)
Обяснение:
- `from google.cloud import compute_v1`: Импортира модула Compute Engine (версия v1). Помислете за използване на по-актуална версия, ако е налична.
- `compute_v1.InstancesClient()`: Създава клиентски обект Compute Engine.
- `compute_v1.ListInstancesRequest()`: Създава заявка за изброяване на инстанции в посочения проект и зона.
- `client.list(request=request)`: Изпраща заявката към Compute Engine API.
- След това кодът итерира през отговора (пейджър обект) и отпечатва информация за всяка инстанция.
3. Cloud Functions
Cloud Functions предоставя среди за изпълнение без сървър. Можете да използвате клиентската библиотека на Python, за да внедрявате и управлявате Cloud Functions.
Пример: Внедряване на Cloud Function (Изисква Google Cloud SDK)
Внедряването на Cloud Function често включва използване на Google Cloud SDK (gcloud) директно, въпреки че до API на Cloud Functions може да се осъществи достъп чрез клиентската библиотека на Python за по-сложни сценарии. Този пример показва основна команда за внедряване на gcloud. Първо създайте main.py и requirements.txt:
main.py (пример)
def hello_world(request):
return 'Здравей, свят!'
requirements.txt (пример)
functions-framework
Команда за внедряване:
gcloud functions deploy your-function-name --runtime python310 --trigger-http --entry-point hello_world
Обяснение:
- `gcloud functions deploy your-function-name`: Внедрява Cloud Function с посоченото име. Заменете `your-function-name` с желаното име за вашата функция.
- `--runtime python310`: Указва Python средата за изпълнение (напр. python310, python311). Изберете поддържана среда за изпълнение.
- `--trigger-http`: Конфигурира функцията да се задейства от HTTP заявки.
- `--entry-point hello_world`: Указва функцията, която да се изпълни, когато функцията се задейства. Това съответства на функцията `hello_world`, дефинирана в `main.py`.
4. Cloud Run
Cloud Run ви позволява да внедрявате контейнеризирани приложения в среда без сървър. Можете да управлявате Cloud Run услуги, използвайки клиентската библиотека на Python, но внедряването често се извършва с Google Cloud SDK или инструменти за инфраструктура като код, като Terraform.
Пример: Внедряване на Cloud Run услуга (Изисква Google Cloud SDK и Docker)
Внедряването на Cloud Run често започва с Dockerfile.
Dockerfile (пример):
FROM python:3.10
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "main:app"]
main.py (пример) - Минимално Flask приложение
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Здравей от Cloud Run!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8080)
requirements.txt (пример):
flask
gunicorn
Команди за внедряване:
# Създайте Docker изображението
docker build -t gcr.io/your-project-id/cloud-run-image .
# Прехвърлете изображението в Google Container Registry
docker push gcr.io/your-project-id/cloud-run-image
# Внедрете Cloud Run услугата
gcloud run deploy your-cloud-run-service \
--image gcr.io/your-project-id/cloud-run-image \
--platform managed \
--region us-central1 \
--allow-unauthenticated
Обяснение:
- `docker build`: Създава Docker изображение от Dockerfile. Заменете `gcr.io/your-project-id/cloud-run-image` с желаното име на изображението и пътя към Google Container Registry.
- `docker push`: Прехвърля Docker изображението в Google Container Registry (GCR). Трябва да сте конфигурирали Docker за удостоверяване с GCR.
- `gcloud run deploy`: Внедрява Cloud Run услуга.
- `--image`: Указва Docker изображението, което да се използва за услугата.
- `--platform managed`: Указва, че услугата трябва да бъде внедрена на напълно управляваната Cloud Run платформа.
- `--region`: Указва региона, в който трябва да бъде внедрена услугата.
- `--allow-unauthenticated`: Разрешава неудостоверен достъп до услугата (за целите на тестване). В производствена среда трябва да конфигурирате правилно удостоверяване.
5. Cloud SQL
Cloud SQL предоставя управлявани релационни бази данни в GCP. Можете да използвате клиентската библиотека на Python (заедно със специфични за базата данни библиотеки като `psycopg2` за PostgreSQL или `pymysql` за MySQL), за да се свържете и управлявате Cloud SQL инстанции.
Пример: Свързване към Cloud SQL PostgreSQL инстанция
import psycopg2
# Заменете с вашето име за връзка към Cloud SQL инстанция, име на база данни, потребителско име и парола
INSTANCE_CONNECTION_NAME = "your-project-id:your-region:your-instance-name"
DB_NAME = "your_database_name"
DB_USER = "your_username"
DB_PASS = "your_password"
try:
conn = psycopg2.connect(
f"host=/cloudsql/{INSTANCE_CONNECTION_NAME} dbname={DB_NAME} user={DB_USER} password={DB_PASS}"
)
print("Успешно свързване с Cloud SQL!")
# Извършете операции с базата данни тук (напр. изпълнете заявки)
cur = conn.cursor()
cur.execute("SELECT version();")
db_version = cur.fetchone()
print(f"Версия на базата данни: {db_version}")
except Exception as e:
print(f"Грешка при свързване с Cloud SQL: {e}")
finally:
if conn:
cur.close()
conn.close()
print("Връзката е затворена.")
Обяснение:
- `import psycopg2`: Импортира библиотеката `psycopg2`, PostgreSQL адаптер за Python. Ще трябва да го инсталирате, използвайки `pip install psycopg2-binary`.
- `INSTANCE_CONNECTION_NAME`: Това е важен идентификатор, който указва как да се свържете с вашата Cloud SQL инстанция. Можете да намерите тази стойност в Google Cloud Console под данните за вашата Cloud SQL инстанция.
- Функцията `psycopg2.connect()` установява връзка с базата данни, използвайки предоставените параметри.
- След това кодът изпълнява проста заявка за извличане на версията на базата данни и я отпечатва на конзолата.
- Блокът `finally` гарантира, че връзката с базата данни е затворена правилно, дори ако възникнат грешки.
Най-добри практики за използване на Python с GCP
Ето някои най-добри практики, които трябва да следвате при разработване на GCP приложения с Python:
- Използвайте служебни акаунти: Винаги използвайте служебни акаунти за удостоверяване, особено в производствени среди. Предоставяйте им само необходимите разрешения (принцип на най-малко привилегии).
- Управлявайте зависимости: Използвайте `requirements.txt` файл, за да управлявате зависимостите на вашето приложение. Това осигурява последователни внедрявания и опростява управлението на зависимости.
- Обработвайте грешки: Приложете правилна обработка на грешки, за да обработвате грациозно изключения и да предотвратявате сривове на приложения. Използвайте try-except блокове, за да хващате потенциални грешки и да ги регистрирате за отстраняване на грешки.
- Регистрирайте ефективно: Използвайте GCP услугата Cloud Logging, за да регистрирате събития и грешки на приложения. Това предоставя ценна информация за поведението на вашето приложение и помага при отстраняване на проблеми.
- Използвайте променливи на средата: Съхранявайте чувствителна информация, като API ключове и идентификационни данни за база данни, в променливи на средата. Това предотвратява тяхното твърдо кодиране във вашия код и подобрява сигурността.
- Оптимизирайте за производителност: Използвайте кеширане, асинхронни операции и други техники за оптимизация, за да подобрите производителността на вашите GCP приложения. Помислете за използване на GCP услуги като Cloud CDN за доставка на съдържание.
- Наблюдавайте вашите приложения: Използвайте GCP услугата Cloud Monitoring, за да наблюдавате здравето и производителността на вашите приложения. Настройте сигнали, за да бъдете уведомени за всякакви проблеми.
- Автоматизирайте внедряванията: Използвайте инструменти за инфраструктура като код, като Terraform или конвейери за внедряване, за да автоматизирате процеса на внедряване. Това осигурява последователни и повторяеми внедрявания.
- Изберете правилната GCP услуга: Изберете подходящата GCP услуга за нуждите на вашето приложение. Обмислете фактори като мащабируемост, цена и оперативна сложност. Например, Cloud Functions са подходящи за задачи, управлявани от събития, докато Cloud Run е идеален за внедряване на контейнеризирани приложения.
- Почистете ресурсите: Не забравяйте да почистите всички неизползвани GCP ресурси, за да избегнете натрупване на ненужни разходи.
- Поддържайте библиотеките актуализирани: Редовно актуализирайте вашите Python библиотеки, за да се възползвате от поправки на грешки, кръпки за сигурност и нови функции. Използвайте `pip`, за да актуализирате вашите пакети: `pip install --upgrade <име-на-пакета>`.
- Използвайте виртуални среди: Създавайте виртуални среди за всеки проект, за да изолирате зависимостите и да избегнете конфликти между различни проекти.
Глобални съображения
Когато разработвате GCP приложения за глобална аудитория, обмислете следното:
- Местожителство на данни: Разберете изискванията за местожителство на данни за вашите целеви региони. Изберете GCP региони, които отговарят на тези изисквания.
- Латентност: Минимизирайте латентността, като внедрите вашите приложения в региони, които са географски близо до вашите потребители.
- Локализация: Локализирайте потребителския интерфейс и съдържанието на вашето приложение за различни езици и региони.
- Валута и обработка на плащания: Ако вашето приложение включва финансови транзакции, уверете се, че поддържате валутите и методите на плащане, използвани във вашите целеви региони.
- Правно и регулаторно съответствие: Бъдете наясно с правните и регулаторни изисквания във вашите целеви региони, като например закони за защита на данните (напр. GDPR) и контрол на износа.
- Часови зони: Обработвайте правилно часовите зони, за да сте сигурни, че вашето приложение показва дати и часове точно за потребители в различни местоположения. Използвайте библиотеки като `pytz` за управление на преобразувания на часови зони.
- Културна чувствителност: Бъдете внимателни към културните различия, когато проектирате потребителския интерфейс и съдържанието на вашето приложение.
Отстраняване на често срещани проблеми
Ето някои често срещани проблеми, които може да срещнете, когато използвате Python с GCP и как да ги отстраните:
- Грешки при удостоверяване: Уверете се, че файлът с ключ на вашия служебен акаунт е валиден и че променливата на средата `GOOGLE_APPLICATION_CREDENTIALS` е зададена правилно. Също така, уверете се, че служебният акаунт има необходимите разрешения за достъп до GCP ресурсите.
- Грешки за отказано разрешение: Проверете отново IAM ролите, присвоени на вашия служебен акаунт или потребителски акаунт. Уверете се, че те имат необходимите разрешения за операцията, която се опитвате да извършите.
- Грешки при импортиране: Уверете се, че сте инсталирали необходимите Python библиотеки, използвайки `pip`. Уверете се, че имената на библиотеките са правилни и че използвате правилната версия.
- Проблеми с мрежовата свързаност: Ако изпълнявате вашето приложение на VM инстанция, уверете се, че VM има мрежова свързаност към интернет и към GCP услугите, до които се опитвате да осъществите достъп. Проверете правилата на защитната стена и мрежовата конфигурация.
- Ограничения на скоростта на API: GCP API имат ограничения на скоростта за предотвратяване на злоупотреби. Ако надвишавате ограниченията на скоростта, може да срещнете грешки. Приложете експоненциално отстъпление или кеширане, за да намалите броя на API повикванията.
Заключение
Python и Google Cloud Platform предоставят мощна комбинация за изграждане и внедряване на мащабируеми, надеждни и глобално достъпни приложения. Следвайки насоките и най-добрите практики, очертани в това ръководство, можете ефективно да използвате клиентската библиотека на Python за достъп и управление на GCP услуги, което ви дава възможност да създавате иновативни решения за глобална аудитория.
Не забравяйте винаги да приоритизирате сигурността, да оптимизирате за производителност и да обмисляте глобалните последици от вашите приложения. Непрекъснатото учене и експериментиране са ключът към овладяване на изкуството на разработката в облака с Python в GCP.